/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package E_implicito_Brent;

import arquivos.MetodoHash;
import java.util.ArrayList;
import java.util.Iterator;
/**
 *
 * @author emanuelle
 */
public class EncadeamentoIB extends MetodoHash{
    private int colisoes = 0;
    private int acessos = 0;
    private ArrayList<Integer> chaves;
    private TabelaHash tabela;

    public EncadeamentoIB(int tamanho, ArrayList<Integer> chaves) {
        this.chaves = chaves;
        tabela = new TabelaHash(tamanho);
        insereTabelaHash();
        buscaTabelaHash();
    }

    public TabelaHash getTabela() {
        return tabela;
    }

    private void insereTabelaHash(){
        Iterator<Integer> iterator = chaves.iterator();
        while (iterator.hasNext()) {
            int chaveAtual = iterator.next();
            int result = tabela.insertion(chaveAtual); // recebe o retorno da inserção
            if (result == 1) { //se o registro foi inserido com sucesso, mas teve colisão
                this.colisoes++;
            }
        }
    }

    private void buscaTabelaHash(){
        Iterator<Integer> iterator = chaves.iterator();
        while (iterator.hasNext()) {
            this.acessos = this.acessos + tabela.search(iterator.next());
        }
    }

    public int getAcessos(){
        return acessos;
    }

    public int getColisoes() {
        return colisoes;
    }


}
